{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**通用最佳实践回顾**\n",
    "\n",
    "- `std::queue<T, Container>` 是顺序容器适配器，默认使用 `std::deque<T>` 作为底层存储；仅提供典型 FIFO 接口（`push` / `emplace` / `front` / `back` / `pop` / `empty` / `size`），不支持随机访问或遍历。\n",
    "- 如需定制内存模型或性能特性，可选择 `std::list<T>`（稳定迭代器、频繁插入删除）或 `std::vector<T>`（连续内存，但扩容时需注意 reallocation）作为第二模板参数；需要稳定指针时可考虑 `std::list`，高吞吐场景使用 `std::deque` 更常见。\n",
    "- `pop()` 不返回值；在调用 `pop()` 之前应先访问 `front()` 并做空检查。对异常安全敏感的场合，应优先使用 RAII 或包装器以避免遗漏弹出。\n",
    "- `std::queue` 不是线程安全结构，多线程使用需外部同步（互斥量、条件变量或 `std::atomic` 辅助）；若需要多生产者/消费者，考虑 `std::queue` + 互斥/条件变量或使用并发队列。\n",
    "- 若需批量遍历或随机访问，考虑直接使用底层容器或 `std::deque`；C++23 起可通过 `q.container()` 访问底层容器引用，但注意保持封装。\n",
    "- 对性能敏感的生产者/消费者场景可利用 `emplace` 减少拷贝，并尽量复用已分配资源；如需要限流，可在外层引入容量管理或半同步半异步模型。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "| 序号 | 工程场景                        | 文件名                      | 说明要点                                                     | 可运行示例代码           |\n",
    "| ---- | ------------------------------- | --------------------------- | ------------------------------------------------------------ | ------------------------ |\n",
    "| 1    | BFS / 层序遍历                  | `queue_bfs_level_order.cpp` | 使用 `std::queue` 进行图/树的广度优先搜索；展示节点入队、访问与层次遍历 | 示例 1：图的 BFS         |\n",
    "| 2    | 任务 / 消息队列（单线程版）     | `queue_task_dispatch.cpp`   | 用 `std::queue` 存放待处理任务；单线程循环消费任务并执行     | 示例 2：任务队列调度     |\n",
    "| 3    | 多阶段流水线缓冲区              | `queue_pipeline_buffer.cpp` | 模拟三阶段流水线，利用三个队列在阶段间传递数据               | 示例 3：多阶段流水线     |\n",
    "| 4    | I/O 提交 / 完成队（用户态模拟） | `queue_io_submission.cpp`   | 使用两个队列模拟 I/O 请求提交与完成事件，展示入队/出队流程   | 示例 4：I/O 提交完成模拟 |"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 示例 1：图的 BFS（queue_bfs_level_order.cpp）\n",
    "- 示例 2：任务队列调度（queue_task_dispatch.cpp）\n",
    "- 示例 3：多阶段流水线（queue_pipeline_buffer.cpp）\n",
    "- 示例 4：I/O 提交完成模拟（queue_io_submission.cpp）"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "C++17",
   "language": "C++17",
   "name": "xcpp17"
  },
  "language_info": {
   "name": "C++17"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
